
For this part of the project we looked into many different alternatives for suitable platforms,
tools, technologies, algorithms and data structures. We mainly conducted our research using the internet however, 
we did use some of our own personal experience and preferences aswell to influence our decisions.

\subsection{Platform Decisions}

\paragraph{Microsoft Windows}The windows operating systems have long dominated the operating system industry. Approximately 90 \% of users use Windows operating systems, chiefly Windows XP followed by Windows Vista. Its ease of use and engaging graphical interface is certainly an attraction. However, precisely due to its widespread usage, Windows is the prime target for malware. Microsoft however, does provide bug fixes and other help to stabalise the system. Moreover, most forms of software run on Windows.

If our group is to market our product to customers, it makes sense that we focus on Windows as the platform of choice since it is the most commonly used operating system. Moreover, if our project decides to make an application, it should be able to run in Windows, and since most software works on Windows, it is the clear choice.

\paragraph{Mac OSX}
Although not as widely used as Windows, this operating system has a very encouraging user interface which is easy to pick up. It is claimed as being more secure than Windows, due to its UNIX base. However, recent reports suggest the Apple’s Snow Leopard system is less secure compared to Windows Vista and XP\footnote{ [ http://www.wired.com/gadgetlab/2009/09/security-snow-leopard/ ].}. Of course we must take into account the comparatively fewer threats from malware on Mac OSX. 
Mac OSX also uses pre-emptive multitasking for all native applications to which decreases the incidence of multiple program crashes.

\paragraph{Linux}
One of the biggest advantages of Linux over other operating systems is the Linux kernel which ensures a basic level of security. Its hardware requirements are also much lesser than Windows and Mac OSX. Additionally, Linux, being open source is a free system. Linux distributions like Ubuntu, also provide a friendly and graphical user interface for users to work with. However, latest hardware is typically slower to reach linux. Moreover, depending on the distribution, the learning curve of Linux might be daunting for users\footnote{[ http://packratstudios.com/index.php/2008/04/06/the-pros-and-cons-of-linux-windows-and-osx/ ]}.

\subsection{Technologies}

\paragraph{Django}
A web framework based on Python language, Django is relatively easy to understand, Python being easier to program due to its natural language-like syntax. One of chief arguments for the use of Django concerned software reuse. Various existing libraries can be used to aid our software development efforts. The group software head also backed Django, and his recommendation was well received since the group could learn a new form of technology while benefiting from his expertise.
\begin{itemize}
\item Advantages
	\begin{itemize}
	\item Our Technical Officer has experience developing with Django which is beneficial when developing and learning the language.
	\item Python is an easy language to learn and use, with a focus on simplicity and ease of use whilst providing an elegant solution to the problem.
	\item A variety of third party plugins coincide with our site's functionality, saving a lot of work by maximising code reuse.
	\end{itemize}
\item Disadvantages
	\begin{itemize}
	\item Requires learning a new language.
	\end{itemize}
\end{itemize}


\paragraph{Ruby on Rails}
A web framework based on Ruby language, it allows users to create powerful applications using simple coding without compromising on the functionality of powerful languages\footnote{[ http://www.hosting.com/support/rubyonrails/faq/ ]}. The Rails framework also has many pre-defined libraries and functions that we may be able to use to our advantage.
\begin{itemize}
\item Advantages
	\begin{itemize}
	\item Increased code reuse due to vast array of pre-defined libraries and functions available.
	\item Also provides an esay and elegant solution to complex web programming problems.
	\end {itemize}
\item Disadvantages
	\begin{itemize}
	\item Abstraction may mean sacrificing fine control even when it would be useful.
	\item None of our group are familiar with the Ruby framework which may affect our pre-defined timetable and/or our time constraints.
	\end {itemize}
\end {itemize}

\paragraph{PHP with SQL}
This option was an attractive one, considering that members had some experience with PHP and SQL previously. Moreover Java, Python, C++, Ruby are normally used to create complex systems which is not necessary for us 
at this stage in the project.
\begin{itemize}
\item Advantages
	\begin{itemize}
	\item Overall group experience with these languages. 
	\item Common technology means it is well supported with many tutorials and guides on usage.
	\end {itemize}
\item Disadvantages
	\begin{itemize}
	\item Low level control means making large systems is complicated and difficult.
	\end {itemize}
\end {itemize}

\subsection{Web Browser Options}
In theory, all web browsers are the same, and any page that works on one will work on all others, as long as they all support the same standards. In practice this is not the case and different browsers support different features. The main browsers right now are Microsoft Internet Explorer, Mozilla Firefox, Safari, Google Chrome and Opera\footnote{\url{http://www.w3schools.com/browsers/browsers_stats.asp}}. Of these, the majority support the web standards codified by the World Wide Web Consortium (W3C)\footnote{\url{http;//www.w3.org}}, so in order to easily gain compatibility with the largest number of web browsers, we will aim to write a W3C standard compliant site. We can test this with W3C's validator\footnote{\url{http://validator.w3.org/}}, which will save us having to debug the site in every browser we wish to support





























